home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / cgitest.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  131 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10040);
  10.  script_bugtraq_id(3885);
  11.  script_version ("$Revision: 1.24 $");
  12.  script_cve_id("CVE-2002-0128");
  13.  
  14.  
  15.  name["english"] = "cgitest.exe buffer overrun";
  16.  name["francais"] = "cgitest.exe buffer overrun";
  17.  script_name(english:name["english"], francais:name["francais"]);
  18.  
  19.  desc["english"] = "There is a buffer overrun in
  20. the 'cgitest.exe' CGI program, which will allow anyone to
  21. execute arbitrary commands with the same privileges as the
  22. web server (root or nobody).
  23.  
  24. Solution : remove it from /cgi-bin.
  25.  
  26. Risk factor : High";
  27.  
  28.  
  29.  desc["francais"] = "Il y a un dΘpassement de buffer
  30. dans le CGI 'cgitest.exe', qui permet α n'importe qui d'executer
  31. des commandes arbitraires avec les memes privilΦges que le 
  32. serveur web (root ou nobody).
  33.  
  34. Solution : retirez-le de /cgi-bin.
  35.  
  36. Facteur de risque : SΘrieux";
  37.  
  38.  
  39.  script_description(english:desc["english"], francais:desc["francais"]);
  40.  
  41.  summary["english"] = "Checks for the /cgi-bin/cgitest.exe buffer overrun";
  42.  summary["francais"] = "VΘrifie le dΘpassement de buffer de /cgi-bin/cgitest.exe";
  43.  
  44.  script_summary(english:summary["english"], francais:summary["francais"]);
  45.  
  46.  script_category(ACT_MIXED_ATTACK); # mixed
  47.  
  48.  
  49.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  50.         francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  51.  family["english"] = "CGI abuses";
  52.  family["francais"] = "Abus de CGI";
  53.  script_family(english:family["english"], francais:family["francais"]);
  54.  script_dependencie("find_service.nes", "no404.nasl");
  55.  script_require_ports("Services/www", 80);
  56.  exit(0);
  57. }
  58.  
  59. #
  60. # The script code starts here
  61. #
  62.  
  63. include("http_func.inc");
  64. include("http_keepalive.inc");
  65.  
  66. port = get_http_port(default:80);
  67.  
  68. if(!get_port_state(port))exit(0);
  69.  
  70. flag = 0;
  71. directory = "";
  72.  
  73. foreach dir (cgi_dirs())
  74. {
  75.  if(is_cgi_installed_ka(item:string(dir, "/cgitest.exe"), port:port))
  76.  {
  77.   flag = 1;
  78.   directory = dir;
  79.   break;
  80.  } 
  81. }
  82.  
  83.  
  84. if(safe_checks())
  85. {
  86.   if(flag)
  87.   {
  88. rep = "
  89. There may be a buffer overrun in
  90. the 'cgitest.exe' CGI program, which will allow anyone to
  91. execute arbitrary commands with the same privileges as the
  92. web server (root or nobody).
  93.  
  94. *** Nessus reports this vulnerability using only
  95. *** information that was gathered. Use caution
  96. *** when testing without safe checks enabled.
  97.  
  98. Solution : remove it from " + directory + "
  99.  
  100. Risk factor : High";
  101.  security_hole(port:port, data:rep);
  102.  exit(0);
  103.  }
  104. }
  105.  
  106. if(!flag)exit(0);
  107. data = string(directory, "/cgitest.exe");
  108. req = http_get(item:data, port:port);
  109. if("User-Agent" >< req)
  110. {
  111.    req = ereg_replace(pattern:"(User-Agent: )(.*)$",
  112.                  replace:"\1"+crap(2600),
  113.               string:req);
  114.    req = req + string("\r\n\r\n");           
  115. }
  116. else
  117. {
  118.    req = req - string("\r\n\r\n");
  119.    req = req + string("\r\nUser-Agent: ", crap(2600), "\r\n\r\n");
  120. }
  121.  
  122. soc = http_open_socket(port);
  123. if(soc)
  124. {
  125.   send(socket:soc, data:req);
  126.   r = http_recv(socket:soc);
  127.   if(!r)security_hole(port);
  128.   http_close_socket(soc);
  129. }
  130.  
  131.